"""
!/usr/bin/env python
-*- coding: utf-8 -*-
@Author  : MarkJia
@Site    : 
@File    : 13、xpath 和 css 定位元素.py
"""

from selenium import webdriver
from selenium.webdriver.common.by import By

"""
driver = webdriver.Chrome()
# 常见操作 ： 清空   输入   点击
driver.find_element(By.ID,'kw').clear()
driver.find_element(By.ID,'kw').send_keys('python')
driver.find_element(By.ID,'su').click()
"""

# 从头到尾定位
# xpath 定位：用于selenium、appium、xpath  解析 html 与 xml，速度比 css 慢
"""
1、属性定位：//input[@id='kw']  或者  //*[@id='kw']
2、索引定位：
/bookstore/book[1]    选取属于bookstore子元素的第一个元素book
/bookstore/book[last()]   选取属于bookstore子元素的最后一个元素book
3、
/ 代表从根节点选取
// 43
.  代表选择当前节点
..  代表选择当前节点的父节点
@ 代表选取属性
4、//a[contains(text(),'文本信息')]
从控制台定位： $x("//*[@id='kw']")
"""

# 样式定位
# css 定位：用于selenium、appium(appium原生控件不支持css)、xpath
"""
1、  css属性：用.表示
2、  id : 用#表示
3、  * 代表所有元素
4、  div p：代表div下的子孙元素   相当于xpath的 //
5、  div>p：代表div下的子元素p    相当于xpath的/
6、属性：   [id='s_tab']  选择id='s_tab'的所有元素    相当于xpath的 //*[@id='s_tab']
从控制台定位：  $('#s_tab a:nth-child(9)')
"""

"""
1、直接子元素
XPATH：//div/input
CSS: div>input
2、后代元素
XPATH：//div//input
CSS: div input
3、ID定位
XPATH：//input[@id='kw']
CSS: input#kw
4、CLASS定位
XPATH：//input[@class="s_ipt"]
CSS: input.s_ipt
5、属性值
XPATH: //input[@name='username']
CSS: input[name='username']
6、多个属性值
XPATH: //input[@name='rsv_spt' and @value="1"]
CSS: input[name='login'][type='submit']
7、第一个元素
XPATH: //div[@id='u1']/a[1]
CSS: div#u1 a:first-child
8、第二个子元素
XPATH: //div[@id='u1']/a[2]
CSS: div#u1 a:nth-child(2)
9、最后一个元素
XPATH: //div[@id='u1']/a[last()]
CSS: div#u1 a:last-child
10、父节点元素
XPATH: //input/..
CSS: 无法实现
11、弟弟元素：following-sibling 继兄弟
XPATH：//input[@class="s_ipt"]/following-sibling::a
CSS：input[class="s_ipt"]+a
12、哥哥元素：preceding-sibling 前兄弟
XPATH：//a[@name='tj_baike']/preceding-sibling::a
CSS：无法实现

"""


class Test_wait:
    def setup(self):
        self.driver = webdriver.Chrome()
        self.driver.get('https://www.baidu.com')
        self.driver.implicitly_wait(10)
        self.driver.maximize_window()

    def test_wait(self):
        # 使用 xpath 定位
        self.driver.find_element(By.XPATH, '//*[@id="kw"]').send_keys('python')
        # 使用 css 定位
        self.driver.find_element(By.CSS_SELECTOR, '#su').click()

    def teardown(self):
        self.driver.quit()
